from netmiko import ConnectHandler
from datetime import datetime
import time
# import logging
# logging.basicConfig(level=logging.DEBUG) #开启debug模式
#'''
# send_commond send_multiline send_command_expect(兼容旧版) send_multiline_timing send_config_from_file send_config_set
# '''
device2 = {"host": "10.10.10.2", # 设备ip地址 必要参数
"device_type":"hp_comware_telnet", # ruijie_os 后面加_telnet 则使用telnet连接 # 设备类型 必要参数
"username": "root",
"password": "root",
"port":None , #ssh 默认端口22 telnet默认端口23
"session_log":'device_log.log'
}
cmd2 ='''
sys
disp cu
'''
try:
print('开始执行:',datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
conn = ConnectHandler(**device2)
#查看设备配置
#send_command
output = conn.send_command(cmd2, read_timeout=20.0,expect_string=r'#')#strip_command=False, strip_prompt=False,
# output = conn.send_command_timing(cmd2, read_timeout=20.0)
#expect_string=r'#' 华三交换机,要排除这#,否则回显不了 ,且多行命令容易回显不完整
# output = conn.send_config_set(cmd2) 还是使用这个比较好。
print(output)
# 解决回显不完整的情况
while '>' not in output[-5:]:
# print('回显并未取完...,检测到回显结尾:<', output[-5:], '>')
#方法一:再次发送命令
# out = conn.send_command('\t', read_timeout=20.0, expect_string=r'#')
# 方法二:接着读回显 ,推荐
out1 = conn.read_channel() # 接着读的回显是空...
time.sleep(0.2) # 必须停一下,否则疯狂的读,虽然不影响结果,但读取的空白,会占屏...
print(out1)
output += out1
if ']' in output[-5:] or '>' in output[-5:]:
break
# 输出内容
print(output)
print('执行完成:', datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
#断开连接
print(conn.command_echo_read(cmd2,20))
conn.disconnect()
print('断开连接')
except Exception as e:
print(e)
print('连接失败...')